package com.sc.controller.vehicle;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sc.domain.VehicleCar;
import com.sc.dto.VehicleCarRequest;
import com.sc.result.PageResult;
import com.sc.result.Result;
import com.sc.service.vehicle.IVehicleCarService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequestMapping("/vehicleCar")
@Api(tags = "车辆管理")
@CrossOrigin
public class VehicleCarController {

    @Autowired
    private IVehicleCarService ivcs;

    /**
     * 图片上传
     *
     * @param file 上传的图片文件
     * @return 图片 URL
     */
    @PostMapping("/upload")
    public Result uploadImage(@RequestParam("file") MultipartFile file) {
        try {
            // 将文件保存到云存储，例如阿里云服务器
            String fileUrl = ivcs.uploadImage(file);
            return Result.success("图片上传成功", fileUrl);
        } catch (Exception e) {
            return Result.error("图片上传失败");
        }
    }

    /**
     * 添加车辆信息
     *
     * @return 添加结果
     */
    @PostMapping("/add")
    @ApiOperation("添加车辆")
    public Result addVehicle(@RequestBody VehicleCarRequest vehicleCarRequest) {
        try {
            // 进行数据库保存等处理
            Boolean isSaved = ivcs.addVehicleCar(vehicleCarRequest);  // 假设 addVehicleCar 方法支持保存图片路径
            if (isSaved) {
                return Result.success("车辆信息添加成功");
            } else {
                return Result.error("车辆信息保存失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("车辆信息添加失败：" + e.getMessage());
        }
    }

    /**
     * 查询车辆详情
     *
     * @param id 车辆ID
     * @return 车辆详情
     */
    @GetMapping("/selectById")
    @ApiOperation("查询车辆详情")
    public Result<VehicleCar> selectById(Integer id) {
        VehicleCar car = ivcs.getById(id);
        return Result.success(car);
    }

    /**
     * 修改车辆情况
     *
     * @param
     * @return 修改结果
     */
    @PutMapping("/update")
    @ApiOperation("修改车辆情况")
    public Result update(@RequestBody VehicleCarRequest vehicleCarRequest) {
        ivcs.addVehicleCar(vehicleCarRequest);
        return Result.success();
    }

    /**
     * 根据车牌号分页查询车辆列表
     *
     * @param carNo    车牌号
     * @param pageNum  页码
     * @param pageSize 每页大小
     * @return 车辆列表
     */
    @GetMapping("/list")
    @ApiOperation("分页查询车辆列表")
    public PageResult list(String carNo, Integer pageNum, Integer pageSize) {
        Page<VehicleCar> page = ivcs.showCars(carNo, pageNum, pageSize);
        return new PageResult(page.getTotal(), page.getRecords());
    }

    /**
     * 删除车辆
     *
     * @param id 车辆ID
     * @return 删除结果
     */
    @DeleteMapping("/delete")
    @ApiOperation("删除车辆")
    public Result delete(Integer id) {
        ivcs.removeById(id);
        return Result.success();
    }

    @DeleteMapping("/deleteByIds")
    @ApiOperation("批量删除")
    public Result deleteByIds(@RequestBody List<Integer> ids) {
        ivcs.removeByIds(ids);
        return Result.success();
    }
}
